//package com.tjetc._6inner_class;
//
//public class _2LocalInnerClass {
//    public static void main(String[] args) {
//        /*
//            局部内部类是定义在外部类的局部位置，⽐如⽅法中，并且有类名。
//                1. 可以直接访问外部类的所有成员，包含私有的。
//                2. 不能添加访问修饰符，因为它其实就是⼀个局部变量。局部变量是不能使⽤修饰符的。但是可
//                以使⽤final修饰，因为局部变量也可以使⽤final。
//                3. 作⽤域：仅仅在定义它的⽅法或代码块中。
//                4. 局部内部类---访问---->外部类的成员（访问⽅式：直接访问）
//                5. 外部类--访问--->局部内部类的成员 （访问⽅式：创建对象，再访问(注意：必须在作⽤域
//                内)）
//                6. 外部其他类---不能访问----->局部内部类(因为局部内部类就是⼀个局部变量）
//                7. 如果外部类和局部内部类的成员重名时，默认遵循就近原则，如果想访问外部类的成员，则可
//                以使⽤(外部类名.this.成员)去访问。
//         */
//
//        _2LocalInnerClass localInnerClass = new _2LocalInnerClass();
//        localInnerClass.f();
//        System.out.println(localInnerClass.hashCode());
//
//    }
//    private int b = 2;
//    private void f2(){
////        A a = new A();
//    }
//    public void f() {
//        // 本质是一个类
//        final class A {
////        public class A {
//            // 类的五大成员依旧可用
//            int a = 1;
//            int b = 1;
//            void f(){}
//            A(){}
//            {}
//            class B{}
//
//            void f1(){
//                System.out.println(b);
//            }
//
//            void f3(){
//                f2();
//            }
//
//            void f4() {
//                // 我就想使用外部类，不想遵守默认的查找规则时 就需要这种方式
//                System.out.println(_2LocalInnerClass.this.b);
//                System.out.println(_2LocalInnerClass.this.hashCode());
//            }
//        }
//
//        // 直接使用内部类
//        A a = new A();
//        a.f1();
//        System.out.println(a.a);
//        a.f4();
//
//    }
//}
//
//class A{
//
//}
